2) 연산자, 식, 범위, 리스트 및 조건문
Mathit에서는 다양한 연산자와 범위, 리스트, 그리고 조건문을 활용해 스마트하게 도형과 데이터를 다룰 수 있습니다. 이번 장에서는 계산과 조건 처리를 쉽게 만들어주는 핵심 문법들을 알아봅니다.
1. 기본 산술 그리고 비교 연산자
Mathit은 일상적인 수학 연산 기호를 그대로 지원합니다.
산술 연산으로는 덧셈 +, 뺄셈 -, 곱셈 *, 나눗셈 /, 나머지 % 를 지원합니다.
리스트 및 경로 연결으로는 ++ (리스트나 경로를 자연스럽게 이어 붙일 때)를 사용합니다.
비교 연산에서는 같음 ==, 다름 !=, 크기 비교 <, <=, >, >= 을 지원합니다.
논리 연산에서는 그리고 & 또는 &&, 또는 | 를 지원합니다.
a = 5 * 2 + 3
is_valid = (a > 10) & (a < 20)
2. 범위 표현식과 포함 관계를 알아보자
수학에서 구간이나 범위를 나타낼 때 범위 연산자 ..를 사용합니다.
1..4는 1부터 4까지의 닫힌 구간을 의미하고, in은 값이 특정 범위나 집합에 포함되는지 확인할 때 사용하는 식입니다.
// x가 1부터 4 사이의 범위에 포함되는지 확인
x_in_range = x in 1..4
이것으로 예시를 들 수 있겠습니다. 참고로, x in 1..4 같은 표현도 가능합니다.
3. 리스트와 리스트 컴프리헨션
여러 개의 값이나 점들을 한 번에 다룰 때는 리스트 [...]를 사용합니다. 특히 반복 규칙을 이용해 리스트를 쉽게 만드는 컴프리헨션 기능이 매우 유용합니다.
// 1. 단순 리스트 선언
points = [A, B, C, D]
// 2. 반복문을 이용한 리스트 컴프리헨션 (step 옵션 활용)
pts = [ on(A--B, t) for t in 0..1, step=0.02 ]
이처럼 for ... in ... 구조를 사용하면 복잡한 점들의 좌표를 일일이 적지 않고도 규칙적으로 생성할 수 있습니다.
4. 패턴 매칭
조건에 따라 다른 결과를 반환해야 할 때 match 문을 사용하면 코드가 매우 간결해집니다. 특히 프랙탈이나 재귀적 구조를 만들 때 매우 유용합니다.
// 깊이(depth)에 따라 다른 경로를 반환하는 함수 예시
result = match depth {
0 => [A--B],
_ => koch(A, P1, depth - 1)
}